﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Web.Mvc;

//namespace Mindfor.Web.Data
//{
//    /// <summary>
//    /// Contains extension functions for data classes.
//    /// </summary>
//    public static class DataExtensions
//    {
//        /// <summary>
//        /// Returns pages tree that lineared into list.
//        /// </summary>
//        /// <param name="manager">Pages manager.</param>
//        //public static IEnumerable<Page> GetPagesTreeList(this IPageManager manager)
//        //{
//        //    return GetPagesTreeListInner(manager, manager.GetRootPages());
//        //}

//        ///// <summary>
//        ///// Returns pages tree for passes level that linered into list.
//        ///// </summary>
//        ///// <param name="manager">Pages manager.</param>
//        ///// <param name="pages">Pages to linear.</param>
//        //private static List<IPage> GetPagesTreeListInner(IPageManager manager, IEnumerable<IPage> pages)
//        //{
//        //    List<IPage> l = new List<IPage>();
//        //    foreach (IPage page in pages.OrderBy(r => r.Sort))
//        //    {
//        //        l.Add(page);
//        //        l.AddRange(GetPagesTreeListInner(manager, page.ChildPages));
//        //    }

//        //    return l;
//        //}


//        ///// <summary>
//        ///// Registers new user.
//        ///// </summary>
//        ///// <param name="manager">Users manager.</param>
//        ///// <param name="login">User login.</param>
//        ///// <param name="pwd">User password.</param>
//        ///// <param name="email">User e-mail.</param>
//        ///// <returns>New user entity.</returns>
//        ///// <exception cref="ArgumenNullException" />
//        ///// <exception cref="ArgumenException" />
//        ///// <exception cref="UserExistsException" />
//        ///// <exception cref="InvalidOperationException" />
//        //public static IUser RegisterUser(this IUserManager manager, string login, string pwd, string email)
//        //{
//        //    // get config
//        //    ICmsConfig config = CmsApplication.Config;
//        //    if (config == null)
//        //        throw new InvalidOperationException("Can not get config from CmsApplication.");

//        //    // check email
//        //    bool emailRequired = config.User.AuthenticateByEmail || config.User.IsEmailRequired;
//        //    if (String.IsNullOrEmpty(email))
//        //    {
//        //        if (emailRequired)
//        //            throw new ArgumentNullException("email");
//        //    }
//        //    else
//        //    {
//        //        email = email.ToLower();
//        //        Regex emailRegex = new Regex(RegexConsts.EmailRegex, RegexOptions.IgnoreCase);
//        //        if (!emailRegex.IsMatch(email))
//        //            throw new ArgumentException("Invalid e-mail", "email");
//        //    }
			
//        //    // check login
//        //    if (String.IsNullOrEmpty(login))
//        //    {
//        //        if (config.User.AuthenticateByEmail)
//        //            login = email;
//        //        else
//        //            throw new ArgumentNullException("login");
//        //    }

//        //    // check exist
//        //    bool isLoginExist = manager.GetUser(login, null) != null;
//        //    bool isEmailExist = manager.GetUserByEmail(email) != null;
//        //    if (isLoginExist || isEmailExist)
//        //        throw new UserExistException(isLoginExist, isEmailExist);

//        //    // create user
//        //    IUser user = manager.CreateUser();
//        //    user.Login = login;
//        //    user.Email = email;
//        //    user.ChangePassword(pwd);
//        //    user.RegDate = DateTime.UtcNow;
//        //    user.LastActivityDate = DateTime.UtcNow;
//        //    user.IsApproved = config.User.AutoApprove;
//        //    manager.AddUser(user);
//        //    return user;
//        //}

//        ///// <summary>
//        ///// Registers new user.
//        ///// </summary>
//        ///// <param name="manager">Users manager.</param>
//        ///// <param name="login">User login.</param>
//        ///// <param name="domain">User domain.</param>
//        ///// <returns>New user entity.</returns>
//        ///// <exception cref="InvalidOperationException" />
//        //public static IUser RegisterUserDomain(this IUserManager manager, string login, string domain)
//        //{
//        //    // get config
//        //    ICmsConfig config = CmsApplication.Config;
//        //    if (config == null)
//        //        throw new InvalidOperationException("Can not get config from CmsApplication.");
//        //    else if (!config.User.AuthenticateByAD)
//        //        throw new InvalidOperationException("Can not create AD-user because authentication using Active Directory is disabled in config.");

//        //    // check login
//        //    if (String.IsNullOrEmpty(login))
//        //        throw new ArgumentNullException("login");
			
//        //    // check exist
//        //    bool isLoginExist = manager.GetUser(login, domain) != null;
//        //    if (isLoginExist)
//        //        throw new UserExistException(isLoginExist, false);

//        //    // create user
//        //    IUser user = manager.CreateUser();
//        //    user.Login = login;
//        //    user.Domain = domain;
//        //    user.RegDate = DateTime.UtcNow;
//        //    user.LastActivityDate = DateTime.UtcNow;
//        //    user.LastPasswordChangeDate = DateTime.UtcNow;
//        //    user.IsApproved = true;
//        //    manager.AddUser(user);
//        //    return user;
//        //}
//    }
//}
